package com.doubao.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;

@Data
@EqualsAndHashCode(callSuper = true)
@TableName("user")
public class User extends BaseEntity {
    /**
     * 用户ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 微信openID，微信登录用户必填
     */
    @TableField("open_id")
    private String openId;

    /**
     * 手机号，手机号登录用户必填，11位手机号
     */
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone;

    /**
     * 用户名，不能为空，长度2-32
     */
    @NotBlank(message = "用户名不能为空")
    @Size(min = 2, max = 32, message = "用户名长度必须在2-32之间")
    private String username;

    /**
     * 头像URL
     */
    private String avatar;

    /**
     * 豆包号，系统自动生成的唯一标识
     */
    @TableField("doubao_id")
    private String doubaoId;

    /**
     * 智能体数量，包括创建和收藏的
     */
    @TableField("smart_device_count")
    private Integer smartDeviceCount;

    /**
     * 用户状态：1-正常，0-禁用
     */
    private Integer status;

    /**
     * 隐私设置：0-公开，1-私密
     */
    @TableField("privacy_setting")
    private Integer privacySetting;

    /**
     * 逻辑删除标志：0-未删除，1-已删除
     */
    @TableLogic
    private Integer deleted;

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;
}
